import { Component, OnInit, Input, ViewChild } from '@angular/core';
import { SFSchema, SFComponent } from '@delon/form';
import { HttpService, SupDic } from 'lbf';
import { NzMessageService, NzTreeHigherOrderServiceToken } from 'ng-zorro-antd';

@Component({
  selector: 'buss-form',
  templateUrl: './buss_form.component.html'
})
export class BussFormComponent implements OnInit {
  @Input() set DAD069(value:number){
    this.dataDAD069 = value;
    this.initForm();
  }
  get DAD069(){
    return this.dataDAD069;
  }


  dataDAD069 = 0;
  @Input() dataDAD017 ;
  @Input() dataSpan = 8;
  @Input() formData = {};
  @ViewChild('addForm',{static:false}) addForm: SFComponent;
  addSchema:SFSchema = {

    properties:{
      DAD069:{
        type: 'string',
        title: '事项主键',
        ui:
        {
          hidden: true
        }      
      }
    }
  };
  get value(): any {
    return this.addForm.value;
  }

  get vaild(){
     return this.addForm.valid;
  }

  

  ngOnInit() {
    if(this.dataDAD069>0)
    {
      this.initForm();
    }
    
    
  }
/*
  ngAfterViewInit() {
    this.initForm();
  }

  */

  tempSchema:SFSchema = {};
  contr_list:Array<string> = [];
  require_list:Array<string> = [];

  createForm(jlist:any){
    this.addSchema = {

      properties:{
        DAD069:{
          type: 'string',
          title: '事项主键',
          ui:
          {
            hidden: true
          },
          default:this.dataDAD069
          
        }
      }
    };
    for(let contr of jlist){
      // 剔除重复的表单项 一件事各子项业务表单可能重复
      if(this.contr_list.indexOf(contr.DAD153)>=0){
        continue;
      }

      this.contr_list.push(contr.DAD153);

      // 是否必输项
      if(contr.DAD157==='1'){
        this.require_list.push(contr.DAD153);
      }

      // 如果是 1 文本框控件
      if(contr.DAD156==='1'){
  
        this.tempSchema = 
          {
            type: 'string',
            title: contr.DAD154,
            ui:{
              grid:{
                span: (contr.DAD158 * this.dataSpan)
              }
            }
          }; 
          if(contr.DAD200!=undefined && contr.DAD200.length>0){
            this.tempSchema.default =  contr.DAD200;
          }
      }
      // 2 多行文本
      else if(contr.DAD156==='2'){
        this.tempSchema = 
          {
            type: 'string',
            title: contr.DAD154,
            ui: {
              widget: 'textarea',
              autosize: { minRows: 2, maxRows: 6 },
            } 
          };    
          if(contr.DAD200!=undefined && contr.DAD200.length>0){
            this.tempSchema.default =  contr.DAD200;
          }      
      }
      // 3 数字
      else if(contr.DAD156==='3'){
        this.tempSchema = 
          {
            type: 'number',
            title: contr.DAD154,
            ui:{
              grid:{
                span: (contr.DAD158 * this.dataSpan)
              }
            }
          };  
         
          if(contr.DAD200!=undefined && contr.DAD200.length>0){
            this.tempSchema.default =  Number(contr.DAD200);
          }
         
      }
      // 4 字典
      else if(contr.DAD156==='4'){
        
          
        this.tempSchema = 
          {
            type: 'string',
            title: contr.DAD154,
            enum: this.dic.getSFDic(contr.DAD153),
            ui:{
              widget: 'select',
              grid:{
                span: (contr.DAD158 * this.dataSpan)
              }
            }
          };     
          if(contr.DAD200!=undefined && contr.DAD200.length>0){
            this.tempSchema.default =  contr.DAD200;
          }
      }
      // 5 日期
      else if(contr.DAD156==='5'){
        this.tempSchema = 
          {
            type: 'string',
            title: contr.DAD154,
            format: 'date',
            ui:{
              grid:{
                span: (contr.DAD158 * this.dataSpan)
              }
            }
          }; 

          if(contr.DAD200!=undefined && contr.DAD200.length>0){
            this.tempSchema.default =  contr.DAD200;
          }
                  
      }
      // 6 单选框
      else if(contr.DAD156==='6'){
        this.tempSchema = 
          {
            type: 'string',
            title: contr.DAD154,
            enum: this.dic.getSFDic(contr.DAD153),
            ui:{
              widget: 'radio',
              grid:{
                span: (contr.DAD158 * this.dataSpan)
              }
            }
          };  
          if(contr.DAD200!=undefined && contr.DAD200.length>0){
            this.tempSchema.default =  contr.DAD200;
          }        
      }
      else{

      }


      // 将串拼接到最终的业务表单串 
      this.addSchema.properties[contr.DAD153] = this.tempSchema;
      
    }

    this.addSchema['required'] = this.require_list;
   
      
      this.addSchema['ui'] = 
      {
        spanLabelFixed:90,
        grid:{
          gutter:20,
          span: this.dataSpan
        }
      }

      

      
  }

  initForm(){
    this.lbs.lbservice("YWBD_INIT",{ DAD069:this.dataDAD069}).then(resdata=>{
      if(resdata.code<1)
      {
         this.msgSrv.error(resdata.errmsg);
      }
      else
      {
        this.createForm(resdata.message.list)
      }
   });
  }
  constructor(private lbs:HttpService ,public msgSrv: NzMessageService, private dic: SupDic ) { }
}
